package oj;

public class LC19 {
    /**
     * 求链表长度法
     */
//    public ListNode removeNthFromEnd(ListNode head, int n) {
//        ListNode dummyHead=new ListNode(-1);
//        dummyHead.next=head;
//        int len=0;
//        ListNode node=head;
//        while(node!=null){
//            len++;
//            node=node.next;
//        }
//        int m=len-n;
//        ListNode cur=dummyHead;
//        for(int i=0;i<m;i++){
//            cur=cur.next;
//        }
//        cur.next=cur.next.next;
//        return dummyHead.next;

    /**
     * 双指针法
     */
    public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode dummyHead=new ListNode(-1);
        dummyHead.next=head;
        ListNode slow=dummyHead;
        ListNode fast=dummyHead;
        for(int i=0;i<=n;i++){
            fast=fast.next;
        }
        while(fast!=null){
            slow=slow.next;
            fast=fast.next;
        }
        slow.next=slow.next.next;
        return dummyHead.next;
    }
}

